// 定义组合式API仓库
import { defineStore } from 'pinia'
import { getPrefixName } from '@/config'

interface userInfoStoreInt {
    [n: string]: any
}
export default defineStore(
    getPrefixName('user'),
    () => {
        const token = ref('')
        const isShowPrize = ref(false)
        const useType = ref<useType>('client')
        const userInfo = ref<userInfoStoreInt>({})
        const accountInfo = reactive({
            can_switch: false,
            client: {
                account: '',
                password: ''
            },
            agent: {
                account: '',
                password: ''
            }
        })
        const bankCard = ref<userInfoStoreInt>({})

        const checkLogin = computed(() => token.value !== '')

        function logOut() {
            token.value = ''

            if (useType.value === 'client') {
                accountInfo.client = { account: '', password: '' }
            } else {
                accountInfo.agent = { account: '', password: '' }
            }
            useType.value = 'client'

            userInfo.value = {}
            bankCard.value = {}
            uni.clearStorageSync()

            uni.showToast({
                icon: 'none',
                title: '退出成功',
                mask: true,
                success() {
                    setTimeout(() => uni.reLaunch({ url: 'pages/login/login' }), 1000)
                }
            })
        }

        return {
            token,
            accountInfo,
            isShowPrize,
            useType,
            userInfo,
            bankCard,
            checkLogin,
            logOut
        }
    },
    {
        unistorage: {
            serializer: {
                // 序列化，默认为 JSON.stringify
                serialize(v) {
                    return JSON.stringify(v)
                },
                // 反序列化，默认为 JSON.parse
                deserialize(v) {
                    return JSON.parse(v)
                }
            }
        } // 开启后对 state 的数据读写都将持久化
        // unistorage: {
        //     key: 'userInfo', // 缓存的键，默认为该 store 的 id，这里是 main,
        //     paths: ['userInfo.token'], // 需要缓存的路径，这里设置 foo 和 nested 下的 data 会被缓存
        //     // 初始化恢复前触发
        //     beforeRestore(ctx: any) {
        //         console.log(ctx)
        //     },
        //     // 初始化恢复后触发
        //     afterRestore(ctx: any) {
        //         console.log('ctx', ctx)
        //     },

        // },
    }
)
